#ifndef Signal1_H
#define Signal1_H
#include "Global_Signal.h"
#include "abstractSignal.h"

template <class T, class U>
class Signal1 : public AbstractSignal
{
        public :

        /*************************************************************/
        /*					Propriétés	     */
        /*************************************************************/

        T * objetSignal;        /*!< Pointeur vers l'objet de base	*/

        U arg1;

        /*************************************************************/
        /*					Constructeur         */
        /*************************************************************/

        Signal1(int (T::*apSignal)(U),T * ref, U arg);

        /*************************************************************/
        /*					Méthodes	  */
        /*************************************************************/

        void Update();


};

template <class T, class U>
Signal1<T,U>::Signal1(int (T::*apSignal)(U),T * ref, U arg) : objetSignal(ref), pSignal(apSignal),arg1(arg){}

template <class T, class U>
void Signal1<T,U>::Update()
{
        if((objetSignal->*pSignal)(arg1))
        {
                Run();
        }
}

#endif
